package com.iflysse.services;

import com.iflysse.pojo.bo.CommonBoResp;
import com.iflysse.pojo.bo.common.PageBeanBoResp;
import com.iflysse.pojo.bo.req.StudentIdBoReq;
import com.iflysse.pojo.bo.req.StudentIdPageBoReq;
import com.iflysse.pojo.bo.req.TaskBoReq;
import com.iflysse.pojo.bo.req.TaskIdBoReq;
import com.iflysse.pojo.bo.resp.*;

import java.sql.SQLException;

public interface TaskService {
    /**
     * 发布任务/暂存任务
     * @param taskBoReq 任务实体
     * @return
     */
    CommonBoResp publishTask(TaskBoReq taskBoReq) throws SQLException;

    /**
     * 学生首页展示,获取当前学生前4个待学习任务列表
     * @param studentIdBoReq
     * @return
     */
    TaskListBoResp getTop4WaitingTaskByStudentId(StudentIdBoReq studentIdBoReq) throws SQLException;

    /**
     * 更多现实学习任务,获取当前学生所有待学习任务列表
     * 分页展示,需要提供分页数据
     * @param studentIdPageBoReq
     * @return
     */
    PageBeanBoResp<TaskBoResp> getWaitingTaskByStudentId(StudentIdPageBoReq studentIdPageBoReq) throws SQLException;

    /**
     * 学生首页展示,获取当前学生前4个已学习任务列表
     * @param studentIdBoReq
     * @return
     */
    CompleteTaskListBoResp getTop4CompleteTaskByStudentId(StudentIdBoReq studentIdBoReq) throws SQLException;


    /**
     * 更多现实学习任务,获取当前学生所有待学习任务列表
     * 分页展示,需要提供分页数据
     * @param studentIdPageBoReq
     * @return
     */
    PageBeanBoResp<CompleteTaskBoResp> getCompleteTaskByStudentId(StudentIdPageBoReq studentIdPageBoReq) throws SQLException;


    /**
     * 根据任务编号获取任务分析详情
     * 老师端点击某个任务查看详情
     * @param taskIdBoReq
     * @return
     * @throws SQLException
     */
    StudentTaskDetailAnalyseBoResp getStudentTaskDetailAnalyseByTestId(TaskIdBoReq taskIdBoReq) throws SQLException;

}
